// pages/order/choice/index.js
var call = require("../../../utils/request.js");
Page({

  /**
   * 页面的初始数据
   */
  data: {
    pageStatus: false,
    orderNo: '', // 需要搜索的订单号
    orderTypeData: [{name: '全部订单',id:0,index:0},{name: '商品订单',id:1,index:1},{name: '预约订单',id:2,index:2},{name: '团购订单',id:3,index:3},{name: '其他订单',id:4,index:4}],
    orderTypeIndex: 0,            //  订单类型索引
    orderTypeTitle: '全部订单',
    orderStatusTitle: '全部状态',
    orderStatusIndex: 0,          //  订单状态索引
    orderStatusId: 0,             //  订单状态选中的id
    orderStatusData: [{name: '全部状态',id:0,index:0}],
    
    listData: [],       // 订单列表数据
    page: 1,            // 页码
    limit: 10,          // 每页多少条
    dataStatus: false,  // 数据提示
    orderId: '',        // 修改地址需要的订单id
    addressId: '',      // 修改地址需要的地址id
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let menuButtonObject = wx.getMenuButtonBoundingClientRect();
    wx.getSystemInfo({
      success: res => {
        let statusBarHeight = res.statusBarHeight // 状态栏的高度
        let navTop = menuButtonObject.top * 2
        let navObjWid = res.windowWidth - menuButtonObject.right + menuButtonObject.width // 胶囊按钮与右侧的距离 = windowWidth - right+胶囊宽度
        let navHeight = statusBarHeight + menuButtonObject.height + (menuButtonObject.top - statusBarHeight) * 2;
        let capsuleHeight = menuButtonObject.height * 2; //胶囊高度
        console.log(`导航栏总体高度${navHeight},胶囊距离顶部距离${navTop}.height,胶囊宽度(包括右边距离)${navObjWid}`)
        console.log(menuButtonObject)
        let contentTop = capsuleHeight + navTop + 80 // 中间内容高度
        this.setData({
          navHeight,navTop,capsuleHeight,contentTop
        })
      },
      fail(err) {
        console.log(err);
      }
    })

    this.getOrderAlllist() // 获取全部订单的数据
  },
  // 回去首页
  goHome () {
    wx.navigateBack({ delta: 1 });
  },
  // 订单类型改变
  goTypeChange (e) {
    console.log(e.currentTarget.dataset.item)
    let { id,index,name } = e.currentTarget.dataset.item
    this.setData({ page: 1,dataStatus: false,orderStatusId: 0 })
    switch(id) {
      case 0: // 全部订单
        this.setData({ orderStatusData: [{name: '全部状态',id:0,index:0}] })
        this.getOrderAlllist() // 获取全部订单的数据
        break
      case 1: // 商品订单
        this.setData({ orderStatusData: [{name: '全部状态',id:0,index:0},{name: '已支付',id:2,index:1},{name: '已发货',id:3,index:2},{name: '已完成',id:4,index:3},{name: '已取消',id:5,index:4}] })
        this.getOrderGlist() // 获取商品订单的数据
        break
      case 2: // 预约订单
        this.setData({ orderStatusData: [{name: '全部状态',id:0,index:0},{name: '已支付',id:2,index:1},{name: '已确认',id:3,index:2},{name: '已完成',id:5,index:3},{name: '已取消',id:6,index:4}] })
        this.getOrderAlist() // 获取预约订单的数据
        break
      case 3: // 团购订单
        this.setData({ orderStatusData: [{name: '全部状态',id:0,index:0},{name: '已支付',id:2,index:1},{name: '拼团成功',id:3,index:2},{name: '拼团失败',id:4,index:3}] })
        this.getOrderGrlist() // 获取团购订单的数据
        break
      case 4: // 其他订单
        this.setData({ orderStatusData: [{name: '全部状态',id:0,index:0},{name: '已完成',id:1,index:1},{name: '已取消',id:2,index:2}] })
        this.getUserOrder() // 获取其他订单的数据
        break
    }

    this.setData({ orderTypeIndex: index,orderTypeTitle: name,orderStatusIndex: 0,orderStatusTitle: '全部状态' })
    this.selectComponent('#itemType').toggle();
  },
  // 订单状态改变
  goStatusChange (e) {
    console.log(e.currentTarget.dataset.item)
    let { id,index,name } = e.currentTarget.dataset.item
    this.setData({ orderStatusIndex: index,orderStatusTitle: name,orderStatusId: id })
    this.selectComponent('#itemStatus').toggle();
    this.publicOperation(false) // 公共操作五大订单
  },






// ****** 五大订单操作 ****** \\

  // 获取全部订单数据
  getOrderAlllist(status){
    let page = this.data.page // 当前页
    let limit = this.data.limit
    let orderNo = this.data.orderNo // 需要搜索的订单号
    call.httpData('GET','/api/order/alllist', { orderNo,page },
    res => {
      console.log(res,'获取全部订单数据')
      if(res.code == 1){
        let list = res.data
        if(status){ // 触发搜索
          let listData = this.data.listData // 数据
          listData = listData.concat(list)
          this.setData({ listData })
        }else{
          this.setData({ listData: list })
        }
        if( list.length < limit && page != 1){
          this.setData({ dataStatus: true })
        }
      }else{
        wx.showToast({ icon: 'none',title: res.msg });
      }
      wx.hideToast() // 隐藏
      this.setData({ pageStatus: true })
    },function (err) {
      console.log(err)
    })
  },

  // 获取商品订单数据
  getOrderGlist(status){
    let page = this.data.page             // 当前页
    let limit = this.data.limit           // 每页条数
    let reeko = this.data.orderStatusId   //  已选的状态id
    let orderNo = this.data.orderNo       // 需要搜索的订单号
    call.httpData('GET','/api/order/glist', { status: reeko,page,limit,orderNo },
    res => {
      console.log(res,'获取商品订单数据')
      if(res.code == 1){
        let { list } = res.data
        if(status){ // 触发搜索
          let listData = this.data.listData // 数据
          listData = listData.concat(list)
          this.setData({ listData })
        }else{
          this.setData({ listData: list })
        }
        if( list.length < limit && page != 1){
          this.setData({ dataStatus: true })
        }
      }else{
        wx.showToast({ icon: 'none',title: res.msg });
      }
      wx.hideToast() // 隐藏
    },function (err) {
      console.log(err)
    })
  },

  // 获取预约订单数据
  getOrderAlist(status){
    let page = this.data.page // 当前页
    let limit = this.data.limit // 每页条数
    let typeIndex = this.data.orderStatusId
    let orderNo = this.data.orderNo       // 需要搜索的订单号
    call.httpData('GET','/api/order/alist', { status: typeIndex,page,limit,orderNo },
    res => {
      console.log(res,'获取预约订单数据')
      if(res.code == 1){
        let { list } = res.data
        if(status){ // 触发搜索
          let listData = this.data.listData // 数据
          listData = listData.concat(list)
          this.setData({ listData })
        }else{
          this.setData({ listData: list })
        }
        if( list.length < limit && page != 1){
          this.setData({ dataStatus: true })
        }
      }else{
        wx.showToast({ icon: 'none',title: res.msg });
      }
      wx.hideToast() // 隐藏
    },function (err) {
      console.log(err)
    })
  },

  // 获取团购订单数据
  getOrderGrlist (status) {
    let page = this.data.page // 当前页
    let limit = this.data.limit // 每页条数
    let reeko = this.data.orderStatusId
    let orderNo = this.data.orderNo       // 需要搜索的订单号
    call.httpData('GET','/api/order/grlist', { status: reeko,page,limit,orderNo },
    res => {
      console.log(res,'获取团购订单数据')
      if(res.code == 1){
        let { list } = res.data
        list.forEach((item, index)=>{
          item.goodsList.forEach((reeko, index)=>{
            reeko.endCountDown = new Date().getTime() + ( reeko.endCountDown * 1000 )
          })
        })
        if(status){ // 触发搜索
          let listData = this.data.listData // 数据
          listData = listData.concat(list)
          this.setData({ listData })
        }else{
          this.setData({ listData: list })
        }
        if( list.length < limit && page != 1){
          this.setData({ dataStatus: true })
        }
        console.log(list)
      }else{
        wx.showToast({ icon: 'none',title: res.msg });
      }
      wx.hideToast() // 隐藏
    },function (err) {
      console.log(err)
    })
  },

  // 获取其他订单数据
  getUserOrder (status) {
    let page = this.data.page // 当前页
    let limit = this.data.limit // 每页条数
    let orderNo = this.data.orderNo       // 需要搜索的订单号
    call.getData('/api/user/order', { offset: page,limit,orderNo },
    res => {
      console.log(res,'获取其他订单数据')
      if(res.code == 1){
        let list = res.data.rows
        if(status){ // 触发搜索
          let listData = this.data.listData // 数据
          listData = listData.concat(list)
          this.setData({ listData })
        }else{
          this.setData({ listData: list })
        }
        if( list.length < limit && page != 1){
          this.setData({ dataStatus: true })
        }
      }else{
        wx.showToast({ icon: 'none',title: res.msg })
      }
    },
    err => {
      console.log(err)
    })
  },
  // 去详情
  goDetails (e) {
    let { id,orderType } = e.currentTarget.dataset.item
    switch(orderType){
      case 1 :  // 去预约详情
        wx.navigateTo({
          url: '/subPackages/pages/standard/my/order/index/details/index?id=' + id 
        })
        break;
      case 2 :  // 去商品详情
        wx.navigateTo({
          url: '/subPackages/pages/standard/my/order/shopping/details/index?id=' + id 
        })
        break;
      case 5 :  // 去团购详情
        wx.navigateTo({
          url: '/subPackages/pages/standard/my/order/groupPurchase/details/index?id=' + id 
        })
        break;
      case 6 :  // 去其他订单
        wx.navigateTo({
          url: '/pages/order/details/index?id=' + id 
        })
        break;
    }
  },
  // 再次购买
  buyAgain (e) {
    let { goodsId,orderType } = e.currentTarget.dataset.item
    switch(orderType) {
      case 1: // 预约
        wx.navigateTo({
          url: '/subPackages/pages/standard/home/recommend/serviceDetails/index?id=' + goodsId 
        })
        break
      case 2: // 商品
      wx.navigateTo({
        url: '/subPackages/pages/standard/home/recommend/shoppingDetails/index?id=' + goodsId 
      })
        break
    }
  },

  // 查看物流
  seeLogistics(e){
    
    let id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: '/pages/order/logistics/index/index?id=' + id 
    })
  },
  // 确认收货
  onsignOpen (e) {
    let orderId = e.currentTarget.dataset.id
    let that = this
    wx.showModal({
      title: '提示',
      content: '是否确认收货？',
      success (res) {
        if (res.confirm) {
          that.receiving( orderId )
        } else if (res.cancel) {}
      }
    })
  },
  // 签字收货
  receiving(id){
    call.httpData('post','/api/order/receiving', { id },
    res => {
      console.log(res)
      if(res.code == 1){
        this.publicOperation(false) // 公共操作五大订单
      }else{
        wx.showToast({ icon: 'none',title: res.msg });
      }
    },function (err) {
      console.log(err)
    })
  },
// ****** 五大订单操作 ****** \\

  /**
   * 页面上拉触底事件的处理函数，与点击加载更多做同样的操作
   */
  onReachBottom () {
    let page = this.data.page;            // 页码
    let dataStatus = this.data.dataStatus // 是否还有数据
    if(!dataStatus){
      this.setData({ page: page + 1 })

      this.publicOperation(true) // 公共操作五大订单

      wx.showToast({
        title: '加载中...',
        icon: 'loading',
      })

    }
  },




  // 用订单号搜索
  bindKeyInput (e) {
    console.log(e)
    let keyWord = e.detail
    this.throttle(this.queryData, null, 600, keyWord);
  },
  // 节流
  throttle: function(fn, context, delay, text) {
    clearTimeout(fn.timeoutId);
    fn.timeoutId = setTimeout(function () {
      fn.call(context, text);
    }, delay);
  },
  // 执行搜索
  queryData(name) {
    console.log(name)        // 此处打印出来的就是 用户输入的值
    wx.showToast({
      title: '加载中...',
      icon: 'loading',
    })

    this.publicOperation(false) // 公共操作五大订单
    
  },
  // 公共操作五大订单
  publicOperation(status){
    if(status == false){this.setData({ page: 1,dataStatus: false })}
    
    let orderTypeIndex = this.data.orderTypeIndex // 0、全部订单 1、商品订单 2、预约订单 3、团购订单 4、其他订单
    switch(orderTypeIndex){
      case 0 :
        this.getOrderAlllist(status) // 获取全部订单的数据
        break;
      case 1 :
        this.getOrderGlist(status) // 获取商品订单的数据
        break;
      case 2 :
        this.getOrderAlist(status) // 获取预约订单的数据
        break;
      case 3 :
        this.getOrderGrlist(status) // 获取团购订单的数据
        break;
      case 4 :
        this.getUserOrder(status) // 获取其他订单的数据
        break;
    }
  },














  // 去预约订单
  goOrder(e){
    let type = e.currentTarget.dataset.type
    console.log(type)
    switch(type){
      case '1' :
        wx.navigateTo({ url: '/subPackages/pages/standard/my/order/index/index' })
        break;
      case '2' :
        wx.navigateTo({ url: '/subPackages/pages/standard/my/order/shopping/index/index' })
        break;
      case '3' :
        wx.navigateTo({ url: '/subPackages/pages/standard/my/order/custom/index/index' })
        break;
      case '4' :
        wx.navigateTo({ url: '/subPackages/pages/standard/my/order/groupPurchase/index/index' })
        break;
    }
  },
  // 我的订单
  order () {
    wx.navigateTo({
      url: '/pages/order/index/index'
    })
  },

  // 去选择地址
  goModifyAddress (e) {
    let orderId = e.currentTarget.dataset.id  //  订单id
    this.setData({ orderId })
    wx.navigateTo({
      url: '/subPackages/pages/standard/my/address/index/index?status=2',
    })
  },
  // 修改地址
  editaddr(e){
    let oid = this.data.orderId  //  订单id
    let addressId = this.data.addressId // 地址id
    call.httpData('post','/api/order/editaddr', { oid,addressId },
    res => {
      console.log(res)
      wx.showToast({ icon: 'none',title: res.msg });
      // if(res.code == 1){
      //   this.getOrderAlllist() // 获取全部订单的数据
      // }
    },function (err) {
      console.log(err)
    })
  }
})